package cn.drenal.capcap.service;

import cn.drenal.capcap.entity.SysRole;
import cn.drenal.capcap.entity.dto.RoleDTO;
import cn.drenal.capcap.entity.dto.RolePermissionDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 角色服务接口
 */
public interface SysRoleService extends IService<SysRole> {
    /**
     * 创建角色
     *
     * @param roleDTO 角色信息
     * @return 创建结果
     */
    SysRole createRole(RoleDTO roleDTO);

    /**
     * 更新角色
     *
     * @param id 角色ID
     * @param roleDTO 角色信息
     * @return 更新结果
     */
    SysRole updateRole(Long id, RoleDTO roleDTO);

    /**
     * 删除角色
     *
     * @param id 角色ID
     */
    void deleteRole(Long id);

    /**
     * 分页查询角色列表
     *
     * @param page 分页参数
     * @param name 角色名称（模糊查询）
     * @param code 角色编码（模糊查询）
     * @return 角色列表
     */
    Page<SysRole> getRoleList(Page<SysRole> page, String name, String code);

    /**
     * 获取所有角色
     *
     * @return 所有角色列表
     */
    List<SysRole> getAllRoles();

    /**
     * 根据ID查询角色
     *
     * @param id 角色ID
     * @return 角色信息
     */
    SysRole getRoleById(Long id);

    /**
     * 分配角色权限
     *
     * @param rolePermissionDTO 角色权限信息
     */
    void assignRolePermission(RolePermissionDTO rolePermissionDTO);

    /**
     * 获取角色权限ID列表
     *
     * @param roleId 角色ID
     * @return 权限ID列表
     */
    List<Long> getRolePermissionIds(Long roleId);
}